using System;
using System.Collections.Generic;
using Managistics.Model;

namespace Managistics.Core.Services
{
    public interface IInventoryService
    {
        /// <summary>
        /// Create relations between Parity / Retail Code
        /// </summary>
        /// <param name="pathFile"></param>
        /// <returns>The result number</returns>
        int ImportToCreateRelations(string filePath, int startRow);

        /// <summary>
        /// Get parity goods to adjust in month
        /// </summary>
        /// <param name="parameters">Managistics.Core.Services.AdjustParityRetailVO</param>
        /// <returns></returns>
        IList<AdjustParityRetailRecord> GetParityGoods2AdjustInMonth(AdjustParityRetailVO parameters);

        /// <summary>
        /// Execute adjust goods stock in month
        /// </summary>
        /// <param name="parameters">Managistics.Core.Services.AdjustParityRetailVO</param>
        /// <returns>The result number of goods adjusted</returns>
        int ExecuteAdjustInMonth(AdjustParityRetailVO parameters);

        /// <summary>
        /// Remove all adjust sheets in month/year
        /// </summary>
        /// <param name="month"></param>
        /// <param name="year"></param>
        /// <returns></returns>
        bool RemoveAllAdjustInMonth(int month, int year);
    }

    # region Result objects

    public class AdjustParityRetailRecord
    {
        public string GoodCode { get; set; }
        public string GoodName { get; set; }
        // using for move items in list
        public string ParityCodeOfRetail { get; set; }
        public string ProductCode { get; set; }
        public string UnitName { get; set; }
        public int? ConversionUnit { get; set; }
        public int? ParityOutputedQuantity { get; set; }

        // after execute adjust command
        public int? AdjustRetailOutputQuantity { get; set; }
        public int? AdjustParityInputQuantity { get; set; }
        //public DateTime? AdjustedDate { get; set; }
    }

    # endregion

    # region Parameter object from Adjust Parity Retail code view

    public class AdjustParityRetailVO
    {
        public string GoodCode { get; set; }
        public string GoodName { get; set; }
        public int AdjustMonth { get; set; }
        public int AdjustYear { get; set; }
    }

    # endregion
}